package com.study.jdbc.junit;

import java.sql.Connection;
import java.sql.PreparedStatement;

import org.junit.Test;

import com.study.jdbc.utils.DBUtil;

/**
* @Name: TransactionOpeTest
* @Description: 事务操作测试类
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-2-17 下午10:25:29 
* @Version: V1.0
 */
public class TransactionOpeTest {
	
	/**
	* @Name: autoTransaction
	* @Description: 不手动开启事务：JDBC默认开启
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-2-17 下午10:25:56
	* @Parameters: 
	* @Return: void
	 */
	@Test
	public void autoTransaction() {
		Connection con = null ;
		PreparedStatement ps = null ;
		try {
			//获取数据库连接对象
			con = DBUtil.getConnection() ;
			String id = "146dedb9-ca8f-4ad4-991e-706380ff59c4" ;
			String sql = "delete from t_customer where id = ? ; " ;
			//创建sql语句执行对象
			ps = con.prepareStatement(sql) ;
			//预处理
			ps.setString(1, id) ;
			//执行sql语句
			int result = ps.executeUpdate() ;  //自动提交事务
			if(result > 0) {
				System.out.println("删除失败！");
			}
		} catch (Exception e) {
			e.printStackTrace() ;
		} finally {
			//释放资源
			DBUtil.close(con, ps, null) ;
		}
	}
	
	/**
	* @Name: openTransaction
	* @Description: 手动开启事务：即关闭自动提交事务
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-2-17 下午10:30:18
	* @Parameters: 
	* @Return: void
	 */
	@Test
	public void openTransaction() {
		Connection con = null ;
		PreparedStatement ps = null ;
		try {
			//获取数据库连接对象
			con = DBUtil.getConnection() ;
			//关闭自动提交事务
			con.setAutoCommit(false) ;
			String id = "146dedb9-ca8f-4ad4-991e-706380ff59c4" ;
			String sql = "delete from t_customer where id = ? ; " ;
			//创建sql语句执行对象
			ps = con.prepareStatement(sql) ;
			//预处理
			ps.setString(1, id) ;
			//执行sql语句
			int result = ps.executeUpdate() ;  
			//提交事务
			con.commit() ;
			if(result > 0) {
				System.out.println("删除成功！");
			}
		} catch (Exception e) {
			e.printStackTrace() ;
		} finally {
			//释放资源
			DBUtil.close(con, ps, null) ;
		}
	}

}







